//
//  SHSQLManager.swift
//  FMDB演练
//
//  Created by teacher on 16/8/1.
//  Copyright © 2016年 teacher. All rights reserved.
//

import UIKit
// 数据库名称
private let dbName = "shstatus.db"
class SHSQLManager: NSObject {
    // 全局访问点
    static let sharedTools:SHSQLManager = SHSQLManager()
    
    let queue: FMDatabaseQueue
    
    override init() {
        // 路径
        let path = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString).stringByAppendingPathComponent(dbName)
        // 打印路径
        print(path)
        // （创建数据库 或者打开打开数据）
        /*
        -如果已经有数据库 打开数据库
        -如果没有数据库 创建一个数据库 并打开
        - 注意 数据库一经打开 不在关闭
        */
        // 核心对象
        queue = FMDatabaseQueue(path: path)
        super.init()
        // 创建表
        createTable()
    }
    
    func createTable(){
        // 路径
        let file = NSBundle.mainBundle().pathForResource("db.sql", ofType: nil)!
       // 准备sql
        let sql = try! String(contentsOfFile: file)
        
        queue.inDatabase { (db) -> Void in
            // 执行sql
            let result = db.executeStatements(sql)
            if result {
                print("创建表成功")
            }else{
                print("创建表失败")
            }
        }
    }
    // 查询数据公共方法
    func selectRecord(sql: String) -> [[String: AnyObject]]{
        // 定义一个可变的临时数组
        var tempArray:[[String: AnyObject]] = [[String: AnyObject]]()
        
        queue.inDatabase { (db) -> Void in
            
            let resultSet = db.executeQuery(sql, withArgumentsInArray: nil)
      
            while resultSet.next() {
                // 定义一个可变字典
                var dict:[String: AnyObject] = [String: AnyObject]()
                // 遍历列数
                for i in 0..<resultSet.columnCount() {
                    let key = resultSet.columnNameForIndex(i)
                    let value = resultSet.objectForColumnIndex(i)
                    dict[key] = value
                }
                // 保存字典
                tempArray.append(dict)
            }
        }
        return tempArray
    }
}



